import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 定义需要更新的文件列表
const filesToUpdate = [
  path.join(__dirname, 'src', 'index.jsx'),
  path.join(__dirname, 'src', 'data.source.jsx'),
  path.join(__dirname, 'src', 'documentation.md'),
  path.join(__dirname, 'src', 'less', 'content11.less'),
  path.join(__dirname, 'src', 'less', 'content13.less')
];

// 定义需要排除的URL（不替换为本地路径的URL）
const excludeUrls = [
  'https://gaode.com/place/B0FFH3KPBX',
  'https://motion.ant.design',
  'https://vite.dev',
  'https://react.dev',
  'https://landing.ant.design/docs/use/umi',
  'https://landing.ant.design/docs/use/getting-started'
];

// 读取URL到本地路径的映射文件
const urlToPathMap = JSON.parse(fs.readFileSync(path.join(__dirname, 'url-to-path-map.json'), 'utf8'));

// 更新文件中的URL引用
function updateFileUrls(filePath) {
  if (!fs.existsSync(filePath)) {
    console.log(`文件不存在，跳过: ${filePath}`);
    return;
  }
  
  let content = fs.readFileSync(filePath, 'utf8');
  let updated = false;
  
  // 遍历映射并替换内容中的URL
  for (const [url, localPath] of Object.entries(urlToPathMap)) {
    // 跳过排除的URL
    if (excludeUrls.includes(url)) {
      console.log(`跳过外部链接: ${url}`);
      continue;
    }
    
    // 检查文件内容是否包含URL
    if (content.includes(url)) {
      content = content.replace(new RegExp(url.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), localPath);
      console.log(`已更新: ${url} -> ${localPath} in ${filePath}`);
      updated = true;
    }
  }
  
  // 如果文件被更新，则写回文件
  if (updated) {
    fs.writeFileSync(filePath, content, 'utf8');
    console.log(`已保存更新: ${filePath}`);
  } else {
    console.log(`文件无变化: ${filePath}`);
  }
}

// 更新所有文件
console.log('开始更新文件中的资源引用...');
filesToUpdate.forEach(updateFileUrls);
console.log('所有文件更新完成!');